//
//
//
//
//
//

#include "Mutex.h"

Mutex::Mutex()
{
	pthread_mutex_init(&_mutex, NULL);
}

Mutex::~Mutex()
{
	pthread_mutex_destroy(&_mutex);
}

bool Mutex::Lock()
{
	int nRet = 0;
	for(int i = 0; i < 3; i++)
	{
		nRet = pthread_mutex_lock(&_mutex);
		if(0 == nRet)
			return true;
	}
	return false;
}

bool Mutex::UnLock()
{
	return pthread_mutex_unlock(&_mutex) == 0 ? true : false;
}

bool Mutex::TryLock()
{
	// Implement later
	return false;
}

MutexVal::MutexVal(Mutex& mutex) : _mutex(mutex)
{
	_mutex.Lock();
}

MutexVal::~MutexVal()
{
	_mutex.UnLock();
}
